🌱 AOSP OTA 移植实战
30 章 · 从入门到移植
📘 风格 · 清新活力
01
OTA升级概述
什么是OTA升级 · 三种模式 (AB/非AB/虚拟AB) · Android系统中的位置
02
AOSP源码环境搭建
Ubuntu配置 · Repo工具 · 源码下载同步 · 编译初始化
03
分区布局与镜像
Boot/System/Vendor/Super · DTBO · VBMeta 镜像生成
04
AB系统升级原理
AB Slot机制 · active/unactive切换 · boot_control HAL
05
非AB系统升级原理
Recovery模式 · cache分区 · 传统升级流程
06
虚拟AB (Virtual AB)
SnapshotManager · Cow写时复制 · 与传统AB区别
07
升级包制作工具
ota_from_target_files · brillo_update_payload · payload生成
08
升级包格式解析
payload.bin结构 · manifest.json · metadata文件
09
UpdateEngine服务
Binder接口 · 内部状态机 · update_engine_client交互
10
update_engine核心流程
下载 · 验证 · 写入 · 切换slot阶段
11
OTA签名与验证
payload签名 · metadata签名 · 公钥嵌入 · 完整性校验
12
Recovery模式升级
Recovery内核 · recovery.img · 菜单 · sideload模式
13
动态分区 (Dynamic Partition)
super.img · lpdump · lpmake · 分区表管理
14
VABC (Virtual AB Compression)
压缩算法 · Cow压缩 · 空间节省原理
15
升级失败处理
回滚机制 · bootctrl markBootSuccessful · crash recovery
16
OTA升级日志分析
update_engine日志 · recovery日志 · logcat · 错误码解读
17
设备端OTA适配
BoardConfig.mk · device.mk · selinux策略 · init.rc
18
服务器端OTA配置
OTA server搭建 · checkForUpdate · fota XML配置
19
增量升级包制作
ota_from_target_files --incremental · 增量原理 · base/target匹配
20
全量升级包制作
全量参数 · payload大小控制 · 分发策略
21
升级包大小优化
压缩算法 · bloat分析 · 无用文件剔除 · 差分优化
22
多设备OTA管理
设备型号识别 · ro.product.device · 匹配规则 · 灰度发布
23
OTA升级测试方法
模拟升级 · adb sideload · ota验证脚本 · 压力测试
24
安全启动与OTA
AVB · vbmeta校验 · dm-verity · 启动链信任
25
升级数据保护
persist分区 · userdata保护 · 升级后数据迁移
26
低内存设备OTA优化
swap分区 · 流式升级 · 分块下载 · 内存占用控制
27
OTA升级国际化
多语言recovery界面 · 字符编码 · 时区处理
28
常见问题与排障
无法开机 · 校验失败 · slot切换失败 · 空间不足
29
实战:移植OTA到MTK平台
BoardConfig配置 · selinux策略 · 升级测试全流程
30
实战:移植OTA到RK平台
分区表调整 · recovery适配 · 升级包制作与验证